package demo02;

/*
 * 在父子类的继承关系中，如果成员变量重名，则创建子类对象时，访问有两种方式：
 * 1. 直接通过子类对象访问成员变量：
 *  等号左边是谁，就优先用谁，没有则向上找。
 * 2. 间接通过成员方法访问成员变量：
 *  该方法属于谁（哪个类定义的），就优先用谁，没有则向上找。
 */
public class Demo01ExtendsField {
    public static void main(String[] args) {
        Fu fu = new Fu(); // 创建父类对象
        System.out.println(fu.numFu); // 只能使用父类的内容，没有任何子类内容

        Zi zi = new Zi(); // 创建子类对象，可以使用子类的内容，也可以使用父类的内容
        System.out.println(zi.numFu); // 10
        System.out.println(zi.numZi); // 20
        System.out.println("==================");

        // 等号左边是谁，就优先用谁
        System.out.println(zi.num); // 200-优先子类
        // System.out.println(zi.abc); // 子类父类都找不到，编译报错！
        System.out.println("==================");

        zi.methodZi(); // 200-这个方法是子类的，优先用子类，如果没有则向上找
        zi.methodFu(); // 100-这个方法是父类当中定义的，用父类
    }
}
